package leetcode.interviewClassics;

import java.util.HashSet;
import java.util.Set;

/**
 * @author Cheng Jun
 * Description: 编写一种算法，若M × N矩阵中某个元素为0，则将其所在的行与列清零。
 * https://leetcode-cn.com/problems/zero-matrix-lcci/
 * @version 1.0
 * @date 2021/10/31 10:48
 */
public class setZeroes {

    public static void main(String[] args) {

    }

    // 找到 元素 为0 的行集合，列集合
    static void setZeroes(int[][] matrix) {
        // 横坐标，纵坐标
        Set<Integer> mSet = new HashSet<>();
        Set<Integer> nSet = new HashSet<>();
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                if (matrix[i][j] == 0) {
                    mSet.add(i);
                    nSet.add(j);
                }
            }
        }
        // 行中有 0 的行，整行变为0
        for (Integer integer : mSet) {
            for (int j = 0; j < matrix[integer].length; j++)
                matrix[integer][j] = 0;
        }
        // 列中有 0 的列，整列变为0
        for (Integer integer : nSet) {
            for (int i = 0; i < matrix.length; i++)
                matrix[i][integer] = 0;
        }
    }
}
